home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 2
/
AACD 2.iso
/
AACD
/
Magazine
/
GraphicsCards
/
StormMesa
/
src
/
alphabuf.s
< prev
next >
Wrap
Text File
|
1999-02-04
|
10KB
|
609 lines
; Storm C Compiler
; Work2:Mesa3/Mesa-3.0/src/alphabuf.c
mc68030
mc68881
XREF _gl_error
XREF _q_memset
XREF _malloc
XREF _free
XREF _CC
SECTION "_gl_alloc_alpha_buffers:0",CODE
;void gl_alloc_alpha_buffers( GLcontext* ctx )
XDEF _gl_alloc_alpha_buffers
_gl_alloc_alpha_buffers
movem.l d2/a2,-(a7)
move.l $C(a7),a2
L69
; GLint bytes = ctx->Buffer->Width * ctx->Buffer->Height * sizeo
move.l $8FC(a2),a0
move.l 4(a0),d2
move.l $8FC(a2),a0
muls.l $8(a0),d2
; if (ctx->Visual->FrontAlphaEnabled)
move.l $8F8(a2),a0
tst.b $24(a0)
beq.b L74
L70
; if (ctx->Buffer->FrontAlpha)
move.l $8FC(a2),a0
tst.l $18(a0)
beq.b L72
L71
; free( ctx->Buffer->FrontAlpha );
move.l $8FC(a2),a0
move.l $18(a0),-(a7)
jsr _free
addq.w #4,a7
L72
; ctx->Buffer->FrontAlpha = (GLubyte *) malloc( bytes );
move.l d2,-(a7)
jsr _malloc
addq.w #4,a7
move.l $8FC(a2),a0
move.l d0,$18(a0)
; if (!ctx->Buffer->FrontAlpha)
move.l $8FC(a2),a0
tst.l $18(a0)
bne.b L74
L73
; gl_error( ctx, GL_OUT_OF_MEMORY, "Couldn't allocat
move.l #L67,-(a7)
pea $505.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
L74
; if (ctx->Visual->BackAlphaEnabled)
move.l $8F8(a2),a0
tst.b $25(a0)
beq.b L79
L75
; if (ctx->Buffer->BackAlpha)
move.l $8FC(a2),a0
tst.l $1C(a0)
beq.b L77
L76
; free( ctx->Buffer->BackAlpha );
move.l $8FC(a2),a0
move.l $1C(a0),-(a7)
jsr _free
addq.w #4,a7
L77
; ctx->Buffer->BackAlpha = (GLubyte *) malloc( bytes );
move.l d2,-(a7)
jsr _malloc
addq.w #4,a7
move.l $8FC(a2),a0
move.l d0,$1C(a0)
; if (!ctx->Buffer->BackAlpha)
move.l $8FC(a2),a0
tst.l $1C(a0)
bne.b L79
L78
; gl_error( ctx, GL_OUT_OF_MEMORY, "Couldn't allocat
move.l #L68,-(a7)
pea $505.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
L79
; if (ctx->Color.DrawBuffer==GL_FRONT)
move.l $21E2(a2),d0
cmp.l #$404,d0
bne.b L81
L80
; ctx->Buffer->Alpha = ctx->Buffer->FrontAlpha;
move.l $8FC(a2),a0
move.l $18(a0),a1
move.l $8FC(a2),a0
move.l a1,$20(a0)
L81
; if (ctx->Color.DrawBuffer==GL_BACK)
move.l $21E2(a2),d0
cmp.l #$405,d0
bne.b L83
L82
; ctx->Buffer->Alpha = ctx->Buffer->BackAlpha;
move.l $8FC(a2),a0
move.l $1C(a0),a1
move.l $8FC(a2),a0
move.l a1,$20(a0)
L83
movem.l (a7)+,d2/a2
rts
L68
dc.b 'Couldn't allocate back alpha buffer',0
L67
dc.b 'Couldn't allocate front alpha buffer',0
SECTION "_gl_clear_alpha_buffers:0",CODE
rts
;void gl_clear_alpha_buffers( GLcontext* ctx )
XDEF _gl_clear_alpha_buffers
_gl_clear_alpha_buffers
movem.l d2-d4/a2,-(a7)
move.l $14(a7),a2
L84
; for (buffer=0;
moveq #0,d4
bra L108
L85
; GLubyte *abuffer = NULL;
sub.l a0,a0
; if (buffer==0
tst.l d4
bne.b L91
L86
move.l $21E2(a2),d0
cmp.l #$404,d0
beq.b L88
L87
move.l $21E2(a2),d0
cmp.l #$408,d0
bne.b L91
L88
move.l $8F8(a2),a1
tst.b $24(a1)
beq.b L91
L89
move.l $8FC(a2),a1
tst.l $18(a1)
beq.b L91
L90
; abuffer = ctx->Buffer->FrontAlpha;
move.l $8FC(a2),a0
move.l $18(a0),a0
bra.b L97
L91
; else if (buffer==1
cmp.l #1,d4
bne.b L97
L92
move.l $21E2(a2),d0
cmp.l #$405,d0
beq.b L94
L93
move.l $21E2(a2),d0
cmp.l #$408,d0
bne.b L97
L94
move.l $8F8(a2),a1
tst.b $25(a1)
beq.b L97
L95
move.l $8FC(a2),a1
tst.l $1C(a1)
beq.b L97
L96
; abuffer = ctx->Buffer->BackAlpha;
move.l $8FC(a2),a0
move.l $1C(a0),a0
L97
; if (abuffer)
cmp.w #0,a0
beq L107
L98
; GLubyte aclear = (GLint) (ctx->Color.ClearColor[3]
lea $21C8(a2),a1
fmove.s $C(a1),fp0
fmul.s #$.437F0000,fp0
fmove.l fp0,d0
move.b d0,d2
; if (ctx->Scissor.Enabled)
move.l a2,a1
add.l #$DE92,a1
tst.b (a1)
beq.b L106
L99
; for (j=0;
moveq #0,d3
bra.b L104
L100
; GLubyte *aptr = ALPHA_ADDR(ctx->Buffer
move.l $8FC(a2),a0
move.l $20(a0),a1
move.l $8FC(a2),a0
move.l $2C(a0),d0
add.l d3,d0
move.l $8FC(a2),a0
muls.l 4(a0),d0
add.l d0,a1
move.l $8FC(a2),a0
move.l $24(a0),d0
lea 0(a1,d0.l),a0
; for (i=0;
moveq #0,d0
bra.b L102
L101
; *aptr++ = aclear;
move.b d2,(a0)+
addq.l #1,d0
L102
move.l a2,a1
add.l #$DE92,a1
cmp.l $A(a1),d0
blt.b L101
L103
addq.l #1,d3
L104
move.l a2,a0
add.l #$DE92,a0
cmp.l $E(a0),d3
blt.b L100
L105
bra.b L107
L106
;er, aclear, ctx->
move.l $8FC(a2),a1
move.l 4(a1),d0
move.l $8FC(a2),a1
muls.l $8(a1),d0
move.l d0,-(a7)
moveq #0,d0
move.b d2,d0
move.l d0,-(a7)
move.l a0,-(a7)
jsr _q_memset
add.w #$C,a7
L107
addq.l #1,d4
L108
cmp.l #2,d4
blt L85
L109
movem.l (a7)+,d2-d4/a2
rts
SECTION "_gl_write_alpha_span:0",CODE
;void gl_write_alpha_span( GLcontext* ctx, GLuint n, GLint x, GLint y
XDEF _gl_write_alpha_span
_gl_write_alpha_span
movem.l d2/d3/a2-a4,-(a7)
movem.l $24(a7),d0/a2/a4
movem.l $1C(a7),d2/d3
move.l $18(a7),a3
L110
; GLubyte *aptr = ALPHA_ADDR( x, y );
move.l a3,a1
move.l $8FC(a1),a0
move.l $20(a0),a1
move.l $8FC(a3),a0
muls.l 4(a0),d0
lea 0(a1,d0.l),a0
add.l d3,a0
; if (mask)
cmp.w #0,a4
beq.b L117
L111
; for (i=0;
moveq #0,d0
bra.b L115
L112
; if (mask[i])
tst.b 0(a4,d0.l)
beq.b L114
L113
; *aptr = rgba[i][ACOMP];
lea 0(a2,d0.l*4),a1
move.b 3(a1),(a0)
L114
; aptr++;
addq.w #1,a0
addq.l #1,d0
L115
cmp.l d2,d0
blo.b L112
L116
bra.b L120
L117
; for (i=0;
moveq #0,d0
bra.b L119
L118
; *aptr++ = rgba[i][ACOMP];
lea 0(a2,d0.l*4),a1
move.b 3(a1),d1
move.b d1,(a0)+
addq.l #1,d0
L119
cmp.l d2,d0
blo.b L118
L120
movem.l (a7)+,d2/d3/a2-a4
rts
SECTION "_gl_write_mono_alpha_span:0",CODE
;void gl_write_mono_alpha_span( GLcontext* ctx, GLuint n, GLint x, GL
XDEF _gl_write_mono_alpha_span
_gl_write_mono_alpha_span
movem.l d2-d4/a2/a3,-(a7)
move.l $24(a7),d0
move.l $1C(a7),d1
move.b $28(a7),d2
move.l $20(a7),d4
move.l $2A(a7),a2
move.l $18(a7),a3
L121
; GLubyte *aptr = ALPHA_ADDR( x, y );
move.l a3,a1
move.l $8FC(a1),a0
move.l $20(a0),a1
move.l $8FC(a3),a0
muls.l 4(a0),d0
lea 0(a1,d0.l),a0
add.l d4,a0
; if (mask)
cmp.w #0,a2
beq.b L128
L122
; for (i=0;
moveq #0,d0
bra.b L126
L123
; if (mask[i])
tst.b 0(a2,d0.l)
beq.b L125
L124
; *aptr = alpha;
move.b d2,(a0)
L125
; aptr++;
addq.w #1,a0
addq.l #1,d0
L126
cmp.l d1,d0
blo.b L123
L127
bra.b L131
L128
; for (i=0;
moveq #0,d0
bra.b L130
L129
; *aptr++ = alpha;
move.b d2,(a0)+
addq.l #1,d0
L130
cmp.l d1,d0
blo.b L129
L131
movem.l (a7)+,d2-d4/a2/a3
rts
SECTION "_gl_write_alpha_pixels:0",CODE
;void gl_write_alpha_pixels( GLcontext* ctx,
XDEF _gl_write_alpha_pixels
_gl_write_alpha_pixels
L143 EQU -$8
link a5,#L143
movem.l d2/d3/a2-a4,-(a7)
move.l $C(a5),d3
move.l $8(a5),a0
move.l $18(a5),a4
L132
; if (mask)
tst.l $1C(a5)
beq.b L139
L133
; for (i=0;
moveq #0,d0
bra.b L137
L134
; if (mask[i])
move.l $1C(a5),a2
tst.b 0(a2,d0.l)
beq.b L136
L135
; GLubyte *aptr = ALPHA_ADDR( x[i], y[i] );
move.l $8FC(a0),a1
move.l $20(a1),a2
move.l $14(a5),a3
move.l $8FC(a0),a1
move.l 0(a3,d0.l*4),d1
muls.l 4(a1),d1
add.l d1,a2
move.l $10(a5),a3
move.l 0(a3,d0.l*4),d1
add.l d1,a2
; *aptr = rgba[i][ACOMP];
lea 0(a4,d0.l*4),a1
move.b 3(a1),(a2)
L136
addq.l #1,d0
L137
cmp.l d3,d0
blo.b L134
L138
bra.b L142
L139
; for (i=0;
moveq #0,d0
bra.b L141
L140
; GLubyte *aptr = ALPHA_ADDR( x[i], y[i] );
move.l $8FC(a0),a1
move.l $20(a1),a2
move.l $14(a5),a3
move.l $8FC(a0),a1
move.l 0(a3,d0.l*4),d1
muls.l 4(a1),d1
add.l d1,a2
move.l $10(a5),a3
move.l 0(a3,d0.l*4),d1
add.l d1,a2
; *aptr = rgba[i][ACOMP];
lea 0(a4,d0.l*4),a1
move.b 3(a1),(a2)
addq.l #1,d0
L141
cmp.l d3,d0
blo.b L140
L142
movem.l (a7)+,d2/d3/a2-a4
unlk a5
rts
SECTION "_gl_write_mono_alpha_pixels:0",CODE
;void gl_write_mono_alpha_pixels( GLcontext* ctx,
XDEF _gl_write_mono_alpha_pixels
_gl_write_mono_alpha_pixels
L155 EQU -$8
link a5,#L155
movem.l d2-d4/a2-a4,-(a7)
movem.l $C(a5),d3/a4
move.b $18(a5),d4
move.l $8(a5),a0
L144
; if (mask)
tst.l $1A(a5)
beq.b L151
L145
; for (i=0;
moveq #0,d0
bra.b L149
L146
; if (mask[i])
move.l $1A(a5),a2
tst.b 0(a2,d0.l)
beq.b L148
L147
; GLubyte *aptr = ALPHA_ADDR( x[i], y[i] );
move.l $8FC(a0),a1
move.l $20(a1),a2
move.l $14(a5),a3
move.l $8FC(a0),a1
move.l 0(a3,d0.l*4),d1
muls.l 4(a1),d1
add.l d1,a2
move.l 0(a4,d0.l*4),d1
; *aptr = alpha;
move.b d4,0(a2,d1.l)
L148
addq.l #1,d0
L149
cmp.l d3,d0
blo.b L146
L150
bra.b L154
L151
; for (i=0;
moveq #0,d0
bra.b L153
L152
; GLubyte *aptr = ALPHA_ADDR( x[i], y[i] );
move.l $8FC(a0),a1
move.l $20(a1),a2
move.l $14(a5),a3
move.l $8FC(a0),a1
move.l 0(a3,d0.l*4),d1
muls.l 4(a1),d1
add.l d1,a2
move.l 0(a4,d0.l*4),d1
; *aptr = alpha;
move.b d4,0(a2,d1.l)
addq.l #1,d0
L153
cmp.l d3,d0
blo.b L152
L154
movem.l (a7)+,d2-d4/a2-a4
unlk a5
rts
SECTION "_gl_read_alpha_span:0",CODE
;void gl_read_alpha_span( GLcontext *ctx,
XDEF _gl_read_alpha_span
_gl_read_alpha_span
movem.l d2/d3/a2/a3,-(a7)
movem.l $20(a7),d0/a2
movem.l $18(a7),d2/d3
move.l $14(a7),a3
L156
; GLubyte *aptr = ALPHA_ADDR( x, y );
move.l a3,a1
move.l $8FC(a1),a0
move.l $20(a0),a1
move.l $8FC(a3),a0
muls.l 4(a0),d0
lea 0(a1,d0.l),a0
add.l d3,a0
; for (i=0;
moveq #0,d0
bra.b L158
L157
; rgba[i][ACOMP] = *aptr++;
lea 0(a2,d0.l*4),a1
move.b (a0)+,3(a1)
addq.l #1,d0
L158
cmp.l d2,d0
blo.b L157
L159
movem.l (a7)+,d2/d3/a2/a3
rts
SECTION "_gl_read_alpha_pixels:0",CODE
;void gl_read_alpha_pixels( GLcontext *ctx,
XDEF _gl_read_alpha_pixels
_gl_read_alpha_pixels
L166 EQU -$8
link a5,#L166
movem.l d2/d3/a2-a4,-(a7)
move.l $C(a5),d3
move.l $8(a5),a2
move.l $18(a5),a4
L160
; for (i=0;
moveq #0,d0
bra.b L164
L161
; if (mask[i])
move.l $1C(a5),a1
tst.b 0(a1,d0.l)
beq.b L163
L162
; GLubyte *aptr = ALPHA_ADDR( x[i], y[i] );
move.l $8FC(a2),a0
move.l $20(a0),a1
move.l $14(a5),a3
move.l $8FC(a2),a0
move.l 0(a3,d0.l*4),d1
muls.l 4(a0),d1
add.l d1,a1
move.l $10(a5),a3
move.l 0(a3,d0.l*4),d1
; rgba[i][ACOMP] = *aptr;
move.b 0(a1,d1.l),d1
lea 0(a4,d0.l*4),a0
move.b d1,3(a0)
L163
addq.l #1,d0
L164
cmp.l d3,d0
blo.b L161
L165
movem.l (a7)+,d2/d3/a2-a4
unlk a5
rts
END